home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / dev / misc / LEDA_gene.lha / LEDA-3.1c-generic / incl / LEDA / segment_set.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-05  |  1.8 KB  |  75 lines

  1. /*******************************************************************************
  2. +
  3. +  LEDA  3.1c
  4. +
  5. +
  6. +  segment_set.h
  7. +
  8. +
  9. +  Copyright (c) 1994  by  Max-Planck-Institut fuer Informatik
  10. +  Im Stadtwald, 6600 Saarbruecken, FRG     
  11. +  All rights reserved.
  12. *******************************************************************************/
  13.  
  14.  
  15. #ifndef LEDA_SEGMENT_SET_H
  16. #define LEDA_SEGMENT_SET_H
  17.  
  18. #include <LEDA/impl/seg_tree.h>
  19. #include <LEDA/line.h>
  20.  
  21. typedef seg_tree_item seg_item;
  22.  
  23. typedef list<seg_item> list_seg_item_;
  24.  
  25.  
  26. //------------------------------------------------------------------------------
  27. // SegmentSet: a dictionary for line segments  with a fixed orientation
  28. //------------------------------------------------------------------------------
  29.  
  30. class SegmentSet : public segment_tree<double,double,GenPtr> {
  31.  
  32. double alpha;           // orientation given by an angle
  33.  
  34. public:
  35.  
  36. segment  key(seg_item);
  37.  
  38. seg_item insert(segment, GenPtr);
  39. seg_item lookup(segment);
  40. void     del(segment);
  41.  
  42. list<seg_item>  intersection(segment);
  43. list<seg_item>  intersection(line);
  44.  
  45.  SegmentSet(double a=0)  { alpha =a; }
  46. ~SegmentSet()  {}
  47. };
  48.  
  49. #define forall_seg_items(i,S) forall_seg_tree_items(i,S)
  50.  
  51.  
  52. //------------------------------------------------------------------------------
  53. // class segment_set: generic SegmentSet
  54. //------------------------------------------------------------------------------
  55.  
  56.  
  57.  
  58. template<class itype>
  59.  
  60. class _CLASSTYPE segment_set : public SegmentSet {
  61.  
  62. public:
  63.  
  64. itype inf(seg_item it)  { return ACCESS(itype,SegmentSet::inf(it));  }
  65. seg_item insert(segment s, itype i)   { return SegmentSet::insert(s,Copy(i));}
  66. void  change_inf(seg_item it,itype i) { SegmentSet::change_inf(it,Copy(i)); }
  67.  
  68.  segment_set(double a=0) : SegmentSet(a) {}
  69. ~segment_set()  {}
  70. };
  71.  
  72.  
  73. #endif
  74.